/************************************************************
 * 文件名: choosefrienddialog.h
 * 功能描述: 选择好友对话框的声明，用于群聊成员选择、好友勾选等。
 * 作者: 李强
 * 创建日期: [请填写日期]
 * 修改历史: 
 ************************************************************/

#ifndef CHOOSEFRIENDDIALOG_H
#define CHOOSEFRIENDDIALOG_H

#include <QDialog>
#include <QWidget>
#include <QHBoxLayout>
#include <QCheckBox>
#include <QLabel>


///////////////////////////////
/// 选择好友窗口中的一个  元素/好友项
//////////////////////////////

class ChooseFriendDialog;

class ChooseFriendItem : public QWidget{
    Q_OBJECT

public:
    ChooseFriendItem(ChooseFriendDialog*owner,const QString& userId,  const QIcon& avatar,const QString& name,bool checked);

    void paintEvent(QPaintEvent* event) override;
    void enterEvent(QEnterEvent* event) override;
    void leaveEvent(QEvent* event) override;

    const QString& getUserId()const{
        return userId;
    }

    QCheckBox* getCheckBox(){
        return checkBox;
    }

private:
    bool isHover = false;

    QCheckBox* checkBox;
    QPushButton* avatarBtn;
    QLabel* nameLabel;
    ChooseFriendDialog* owner;     //记录了哪个 QWidget 持有了这个 item。 此处的 QWidget 应该是 ChooseFriendDialog

    QString userId;                //记录了当前Item 对应的 userId 是啥
};



///////////////////////////////
///     选择好友的窗口
//////////////////////////////

class ChooseFriendDialog : public QDialog
{
    Q_OBJECT
public:
    ChooseFriendDialog(QWidget* parent);

    void initLeft(QHBoxLayout* layout);

    void initRight(QHBoxLayout* layout);

    void addFriend(const QString& userId,const QIcon& avatar,const QString& name,bool checked);
    void addSelectedFriend(const QString& userId, const QIcon& avatar, const QString& name);
    void deleteSelectedFriend(const QString& userId);


private:
    // 保存左侧全部好友列表的 QWidget
    QWidget* totalContainer;

    // 保存右侧全部好友列表的 QWidget
    QWidget* selectedContainer;
};

#endif // CHOOSEFRIENDDIALOG_H
